package models

import (
	"go-barrage/db"
	"go-barrage/dto"
	"go-barrage/vo"
	"log"
	"time"
)

type BarrageMsg struct {
	Id          int64     `json:"id"`
	UserId      int64     `json:"userId"`
	VideoId     int64     `json:"videoId"`
	MsgContent  string    `json:"msgContent"`
	MsgPosition int32     `json:"msgPosition"`
	MsgColor    string    `json:"msgColor"`
	VideoTime   int32     `json:"videoTime"`
	DelFlag     bool      `json:"delFlag"`
	ShowFlag    bool      `json:"showFlag"`
	CreateTime  time.Time `json:"createTime"`
	UpdateTime  time.Time `json:"updateTime"`
}

func (BarrageMsg) TableName() string {
	return "t_barrage_msg"
}

func GetBarrageMsgListByVideoId(barrageMsgDTO dto.BarrageMsgDTO) vo.PageVo {
	videoId := barrageMsgDTO.Id
	pageSize := barrageMsgDTO.PageSize
	pageNum := barrageMsgDTO.PageNum

	if pageSize < 1 {
		pageSize = 10
	}
	if pageNum < 1 {
		pageNum = 1
	}

	var count int64

	var barrageMsgList []BarrageMsg

	mysql := db.GetMysql()
	mysql.Model(&BarrageMsg{}).Where("video_id = ?", videoId).Count(&count)

	err := mysql.Debug().Offset((pageNum-1)*pageSize).Limit(pageSize).Where("video_id = ?", videoId).Find(&barrageMsgList).Error
	if err != nil {
		log.Println("分页查询弹幕信息发生异常:", err)
	}

	var pageVo vo.PageVo
	pageVo.PageNum = pageNum
	pageVo.PageSize = pageSize
	pageVo.Records = barrageMsgList
	pageVo.Total = count

	return pageVo
}
